# 编译器和编译选项
CC = g++
CFLAGS = -std=c++17 -O3 -march=native

# 生成文件的输出目录
BUILD_DIR = build

# 确保 build 目录存在
$(shell mkdir -p $(BUILD_DIR))

# 可执行文件和目标文件的路径
TARGET = $(BUILD_DIR)/test
OBJS = $(BUILD_DIR)/main.o $(BUILD_DIR)/hung.o

# 默认目标
all: $(TARGET)

# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)
	$(CC) -o $(TARGET) $(OBJS)

# 生成 hung.o
$(BUILD_DIR)/hung.o: Hungarian.cpp Hungarian.h
	$(CC) $(CFLAGS) -c Hungarian.cpp -o $(BUILD_DIR)/hung.o

# 生成 main.o
$(BUILD_DIR)/main.o: testMain.cpp Hungarian.h
	$(CC) $(CFLAGS) -c testMain.cpp -o $(BUILD_DIR)/main.o

# 清理所有生成的文件
clean:
	-rm -rf $(BUILD_DIR)

